import { request } from "@/utils/https";

/**
获取轮播图
 */

// 前端传递数据
interface BannerData {
  pageNum: number;
  pageSize: number;
}

// 后端返回数据
export interface BannerResponseData {
  id: number;
  title: string;
  imageUrl: string;
  targetUrl: string;
  sort: number;
  status: number;
  editTime: string;
  createTime: string;
  updateTime: string;
}

export const getBanner = (data: BannerData) => {
  return request<ResponseData<BannerResponseData>>(
    "/api/banner/list/active",
    "GET",
    data,
    {},
  );
};

/**
 * 热门产品
 */

export interface HotProjectResponseData {
  /**
   * id
   */
  id: number;

  /**
   * 分类关联Id
   */
  categoryId: number;

  /**
   * 项目名称
   */
  name: string;

  /**
   * 项目描述
   */
  description: string;

  /**
   * 项目封面图片
   */
  coverImgUrl: string;

  /**
   * 是否产品 0 是 1否
   */
  isProduct: number;

  /**
   * 是否爆品 0是 1否
   */
  isHot: number;

  /**
   * 是否积分商品 0正常 1否
   */
  isIntegralProduct: number;

  /**
   * 积分商品价格
   */
  integralPrice: number;

  /**
   * 产品价格（现价）
   */
  price: number;

  /**
   * 产品原价
   */
  originalPrice: number;

  /**
   * 促销开始时间
   */
  promotionStartTime: string;

  /**
   * 促销结束时间
   */
  promotionEndTime: string;

  /**
   * 剩余促销时间（秒）
   */
  remainingPromotionTime: number;

  /**
   * 总次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;

  /**
   * 项目状态：0-正常，1-下架
   */
  status: number;

  /**
   * 项目详情图片/视频
   */
  detailImgUrl: string;

  /**
   * 产品详情内容（HTML格式）
   */
  detail: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 送多少积分
   */
  giveIntegral: number;

  /**
   * 更新时间
   */
  updateTime: string;
}
// 0 是产品 1 不是产品
export const getHotProject = (searchText: string) => {
  return request<ResponseData<HotProjectResponseData>>(
    "/api/project/hot",
    "GET",
    {
      searchText,
    },
  );
};

/**
 * 获取商品详情
 */

export const getProductDetail = (id: number) => {
  return request<ResponseData<HotProjectResponseData>>(
    `/api/project/get/vo`,
    "GET",
    {
      id,
    },
  );
};

/**
 * 查找首页分类
 projectCategory/list
 */

export interface ProjectCategoryResponseData {
  /**
   * id
   */
  id?: number;

  /**
   * 分类名称
   */
  name: string;

  /**
   * 分类图标
   */
  icon: string;

  /**
   * 分类描述
   */
  description?: string;

  /**
   * 排序
   */
  sort?: number;

  /**
   * 分类状态：0-正常，1-禁用
   */
  status?: number;

  /**
   * 创建时间
   */
  createTime?: string;

  /**
   * 更新时间
   */
  updateTime?: string;

  products: ProjectCategoryResponseData[];
}
interface ProjectCategoryResponseData {
  createTime: string;
  description: string;
  id: number;
  name: string;
  sort: number;
  status: number;
  updateTime: string;
}

// 传递给后端的
interface ProjectCategoryData {
  pageNum: number;
  pageSize: number;
}
export const getProjectCategory = (data: ProjectCategoryData) => {
  return request<ResponseData<ProjectCategoryResponseData>>(
    "/api/projectCategory/list/page/vo",
    "POST",
    data,
  );
};

/**
 * 查询医师
 */
export interface DoctorResponseData {
  /**
   * id
   */
  id: number;

  /**
   * 医生姓名
   */
  name: string;

  /**
   * 性别：0-男，1-女
   */
  gender: number;

  /**
   * 年龄
   */
  age: number;

  /**
   * 医生擅长领域
   */
  expertise: string;

  /**
   * 所属科室
   */
  department: string;

  /**
   * 医生简介
   */
  introduce: string;

  /**
   * 医生头像
   */
  avatar: string;

  /**
   * 医生状态：0-营业，1-休息
   */
  status: number;

  /**
   * 创建时间
   */
  createTime: string;
}
export const getDoctor = () => {
  return request<ResponseData<DoctorResponseData>>(
    "/api/doctor/list",
    "get",
    {},
    {},
  );
};

/**
 * 创建订单
 /shopOrder/pay/
 */

export interface CreateOrderData {
  /**
   * 用户id
   */
  userId: number;

  /**
   * 项目商品id
   */
  projectId: number;

  /**
   * 支付类型：0-现金支付，1-积分支付
   */
  paymentType: number;

  /**
   * 医生id
   */
  doctorId: number;

  /**
   * 订单总价
   */
  totalPrice: number;

  /**
   * 剩余次数
   */
  remainingSessions?: number;

  /**
   * 预约日期
   */
  appointmentDate: string;

  /**
   * 入馆时间
   */
  appointmentTime: string;

  /**
   * 是否是上午 0 是 1否
   */
  isMorning: number | null;
}

export const createOrder = (data: CreateOrderData) => {
  return request<ResponseData<any>>("/api/shopOrder/pay", "POST", data);
};

/**
 * GET /user/project/order/{orderId} 根据订单id查询订单详情
 */

//  后端返回格式
export interface OrderDetailResponseData {
  /**
   * 订单ID
   */
  orderId: number;

  /**
   * 项目ID
   */
  projectId: number;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 项目名称
   */
  projectName: string;

  /**
   * 医生ID
   */
  doctorId: number;

  /**
   * 医生姓名
   */
  doctorName: string;

  /**
   * 预约日期（格式：yyyy/MM/dd）
   */
  appointmentDate: string;

  /**
   * 预约时间（格式：HH:mm）
   */
  appointmentTime: string;

  /**
   * 项目图片
   */
  projectImage: string;

  /**
   * 总共次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;

  /**
   * 订单支付优惠价
   */
  price: number;

  /**
   * 是商品还是项目 0产品 1项目
   */
  isProduct: number;
}
export const getOrderDetail = (orderId: number) => {
  return request<ResponseData<OrderDetailResponseData>>(
    "/api/user/project/order/" + orderId,
    "GET",
    {},
  );
};
